﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;

using System.Text;
using System.Windows.Forms;
using Itegracion.Framework.Forms;
using System.Text.RegularExpressions;

namespace Itegracion.iAlmacen.Forms
{
    public partial class fmProducto : fmMantenimiento
    {
        public fmProducto()
        {
            InitializeComponent();
            Titulo = "Administración de Productos y Stock";
            Subtitulo = "Gestiona la información de productos y Stock";
        }
        protected override void OnAddFields(DataGridView listado, ref ucEdicion propiedades)
        {
            listado
                .AddTextBoxColumn("ID", 50)
                .AddTextBoxColumn("Codigo", 150)
                .AddTextBoxColumn("Nombre", 200)
                .AddTextBoxColumn("Marca", 200)
                .AddTextBoxColumn("Cantidad", 80)
                .AddTextBoxColumn("Costo", 80)
                .AddTextBoxColumn("Precio", "precio_unitario", 80)
                .AddTextBoxColumn("Tipo", 100);

            propiedades = new ucProducto();
        }
        protected override void OnLoadData(DataGridView listado)
        {
            _("Itegracion.iAlmacen", "Producto", "TraerListado")
                .Out(listado);
            _("Itegracion.iAlmacen", "Constante", "TraerCombo", new Element("tipo", "TipoProducto"))
                .Out((this.propiedades as ucProducto).cbTipo);
        }
        protected override void OnNew(ucEdicion propiedades)
        {
        }
        protected override void OnEdit(string id, DataGridViewCell cell, ucEdicion propiedades)
        {
            ucProducto uc = (ucProducto)propiedades;
            _("Itegracion.iAlmacen", "Producto", "Traer", cell)
                .Out(uc.tbID, uc.tbCodigo, uc.tbNombre, uc.tbMarca, uc.tbCantidad, uc.tbCosto, uc.tbPrecio, uc.cbTipo);
        }
        protected override bool AreDataValid(ModoMantenimiento modo, ucEdicion propiedades)
        {
            ucProducto uc = (ucProducto)propiedades;
            if (!Regex.IsMatch(uc.tbCodigo.Text, @"^[A-Z0-9]+$"))
                return Error(uc.tbCodigo, "Por favor, Ingrese un Codigo Alfanumerico.");
            if (!Regex.IsMatch(uc.tbNombre.Text, @"^[a-zA-Z ]+$"))
                return Error(uc.tbNombre, "Por favor, Ingrese un Nombre correcto.");
            if (!Regex.IsMatch(uc.tbCantidad.Text, @"^[0-9.]+$"))
                return Error(uc.tbCantidad, "Por favor, un decimal correcto.");
            if (!Regex.IsMatch(uc.tbCosto.Text, @"^[0-9.]+$"))
                return Error(uc.tbCosto, "Por favor, un decimal correcto.");
            if (!Regex.IsMatch(uc.tbPrecio.Text, @"^[0-9.]+$"))
                return Error(uc.tbPrecio, "Por favor, un decimal correcto.");

            return true;
        }
        protected override void OnSave(object id, ModoMantenimiento modo, ucEdicion propiedades)
        {
            ucProducto uc = (ucProducto)propiedades;
            Element rpta = new Element();
            if (modo == ModoMantenimiento.Nuevo)
            {
                _("Itegracion.iAlmacen", "Producto", "Insertar", uc.tbID, uc.tbCodigo, uc.tbNombre, uc.tbMarca, uc.tbCantidad, uc.tbCosto, uc.tbPrecio, uc.cbTipo)
                    .Out(rpta);
            }
            if (modo == ModoMantenimiento.Edicion)
            {
                _("Itegracion.iAlmacen", "Producto", "Modificar", uc.tbID, uc.tbCodigo, uc.tbNombre, uc.tbMarca, uc.tbCantidad, uc.tbCosto, uc.tbPrecio, uc.cbTipo)
                    .Out(rpta);
            }
        }
        protected override bool OnDelete(string id, DataGridViewCell cell)
        {
            Element rpta = new Element();
            _("Itegracion.iAlmacen", "Producto", "Eliminar", cell)
                .Out(rpta);
            return true;
        }
    }
}
